package dominioDAO;

import hbt.HibernateDAO;
import hbt.HibernateUtil;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import dominioEntity.Proveedor;
import dominioTO.ProveedorTO;

public class ProveedorDAO {
	private static ProveedorDAO instancia ;
	private static SessionFactory sf;
	private static Session session;
	
	public static ProveedorDAO getInstancia() {
		if(instancia == null){
			instancia = new ProveedorDAO();
		} 
		return instancia;
	}
	public ProveedorDAO()
	{
		sf = HibernateUtil.getSessionFactory();
	}
	
	protected Session getSession(){
		if(session == null || !session.isOpen()){
			session = sf.openSession();
		}
		return session;
	}
	
	public void persistirProveedor(List<ProveedorTO> list) throws RemoteException
	{		
		List<Proveedor> prov = new ArrayList<Proveedor>();
		for(ProveedorTO dto : list){
			
			if(this.buscarProveedor(dto.getCuit())==null )
			{
			Proveedor aux = new Proveedor ();
			
			aux.setCuit(dto.getCuit());
			aux.setNombre(dto.getNombre());
			aux.setDireccion(dto.getDireccion());
			aux.setTelefono(dto.getTelefono());			
			prov.add(aux);
			}
		}
		HibernateDAO.getInstancia().persistList(prov);			
	}
	
	@SuppressWarnings("unchecked")
	public ProveedorTO buscarProveedor(String cuit)
	{
		Session session = sf.openSession();
		String sentencia = "from Proveedor p where p.cuit=?";
		
		List<Proveedor> prov = (List<Proveedor>) session.createQuery(sentencia).setString(0, cuit).list();
	
		if(prov.isEmpty())
		{
			return null;	
		}
		return prov.get(0).getDTO();
	}
	
}
